package com.ocom.aiotweb.feignclient;


import com.ocom.common.constant.AiotUrl;
import com.ocom.common.request.aiot.OtaPushVo;
import com.ocom.common.resp.Result;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;

@FeignClient(value = "aiot")
public interface AiotClientService {

    // 2.3.1.获取设备信息（getDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_GetDeviceInfo)
    public Result GetDeviceInfo(@RequestBody Map<String,Object> map);


    // 2.3.2.添加设备信息（addDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_AddDeviceInfo)
    public Result AddDeviceInfo(@RequestBody Map<String,Object> map);


    // 2.3.3.修改设备信息（updateDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_UpdateDeviceInfo)
    public Result UpdateDeviceInfo(@RequestBody Map<String,Object> map);

    //2.3.4.删除设备信息（deleteDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_DeleteDeviceInfo)
    public Result DeleteDeviceInfo(@RequestParam("deviceNo") String deviceNo,@RequestParam("force") Integer force);

    // 2.4.1.保存设备升级版本信息（addDeviceVerInfo）
    @PostMapping(AiotUrl.URL_Aiot_AddDeviceVerInfo)
    public Result AddDeviceVerInfo(@RequestBody Map<String,Object> map);

    // 2.4.2.获取设备升级版本列表（getDeviceVerInfo）
    @PostMapping(AiotUrl.URL_Aiot_GetDeviceVerInfo)
    public Result GetDeviceVerInfo(@RequestBody Map<String,Object> map);

    //2.4.3.删除设备升级版本（deleteDeviceVerInfo）
    @PostMapping(AiotUrl.URL_Aiot_DeleteDeviceVerInfo)
    public Result DeleteDeviceVerInfo(@RequestParam("id") Integer id);


    // 2.3.3.添加用户信息（addUserInfo）
    @PostMapping(AiotUrl.URL_Aiot_AddUserInfo)
    public Result AddUserInfo(@RequestBody Map<String,Object> map);

    // 2.3.2.更新用户信息（updateUserInfo）
    @PostMapping(AiotUrl.URL_Aiot_UpdateUserInfo)
    public Result UpdateUserInfo(@RequestBody Map<String,Object> map);

    // 2.3.1.获取用户信息（getUserInfo）
    @GetMapping(AiotUrl.URL_Aiot_GetUserInfo)
    public Result GetUserInfo(@RequestParam("account") String account);

    // 2.2.1.获取消费设备Saas平台列表(getSaasNameList)
    @GetMapping(AiotUrl.Url_Aiot_GetSaasNameList)
    public Result GetSaasNameList(@RequestParam("saasNo")String saasNo,@RequestParam("saasName") String saasName);

    // 2.2.2.获取数字枚举值列表(getFieidNoNameList)
    @GetMapping(AiotUrl.Url_Aiot_GetFieidNoNameList)
    public Result GetFieidNoNameList(@RequestParam("fieldName")String fieldName);

    // 获取用户列表（getUserList）
    @PostMapping(AiotUrl.Url_Aiot_GetUserList)
    public Result GetUserList(@RequestBody Map<String,Object> map);

    /**
     * 2.7.2.获取设备升级版本列表（getDeviceVerInfo）
     * */
    @PostMapping(AiotUrl.URL_Aiot_AccessDeviceGetDeviceVerInfo)
    public Result AccessDeviceGetDeviceVerInfo(@RequestBody Map<String,Object> map);

    //2.7.1.保存设备升级版本信息（addDeviceVerInfo）
    @PostMapping(AiotUrl.URL_Aiot_AccessDeviceAddDeviceVerInfo)
    public Result AccessDeviceAddDeviceVerInfo(@RequestBody Map<String,Object> map);

    /**
     * 2.7.3.删除设备升级版本（deleteDeviceVerInfo）
     *
     * */
    @PostMapping(AiotUrl.URL_Aiot_AccessDeviceDeleteDeviceVerInfo)
    public Result AccessDeviceDeleteDeviceVerInfo(@RequestParam("id")Long id);

    //2.6.1.获取设备信息（getDeviceInfo）
    @PostMapping(AiotUrl.Url_Aiot_AccessDeviceGetDeviceInfo)
    public Result AccessDeviceGetDeviceInfo(@RequestBody Map<String,Object> map);

    // 2.6.2.添加设备信息（addDeviceInfo）
    @PostMapping(AiotUrl.Url_Aiot_AccessDeviceAddDeviceInfo)
    public Result AccessDeviceAddDeviceInfo(@RequestBody Map<String,Object> map);

    // 2.6.3.修改设备信息（updateDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_AccessDeviceUpdateDeviceInfo)
    public Result AccessDeviceUpdateDeviceInfo(@RequestBody Map<String,Object> map);

    //2.6.4.删除设备信息（deleteDeviceInfo）
    @PostMapping(AiotUrl.URL_Aiot_AccessDeviceDeleteDeviceInfo)
    public Result AccessDeviceDeleteDeviceInfo(@RequestParam("deviceNo") String deviceNo,@RequestParam("force") Integer force);

    // 2.3.5.获取用户角色列表（getUserRoleByUserId）
    @GetMapping(AiotUrl.URL_Aiot_GetUserRoleByUserId)
    public Result GetUserRoleByUserId(@RequestParam("userId") Long userId);


    @PostMapping(AiotUrl.Url_Aiot_getDeviceInfoByMachNo)
    public Result getDeviceInfoByMachNo(@RequestParam("machNo")String machNo);


    @PostMapping(AiotUrl.URLP_AIOT_getOtaList)
    public Result getList(@RequestParam("page")Integer page,@RequestParam("size") Integer size,@RequestParam("deviceNo") String deviceNo);


    @PostMapping(AiotUrl.URLP_AIOT_otaPush)
    public Result otaPush(@RequestBody OtaPushVo otaPushVo);

    @PostMapping(AiotUrl.Url_Aiot_saveOtaFile)
    public Result saveOtaFile(@RequestParam("appVer") String appVer,@RequestParam("url") String url,@RequestParam("type") Integer type);

    @PostMapping(AiotUrl.Url_Aiot_otaFileList)
    public Result otaFileList(@RequestParam("page") Integer page,@RequestParam("size") Integer size);
}
